package JZ_Offer.algorithm.bit_operation;

/**
 * 求等差数列的和
 *
 * 求1+2+3+...+n，要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句（A?B:C）。
 */
public class JZ64_求等差数列的和 {
    /**
     * 递归方法 并通过与运算的短路特性 做结束条件
     */
    private static int Sum_Solution(int n) {
        int sum = 0;
        boolean flag = (n > 0) && ((sum = n + Sum_Solution(n - 1)) > 0);
        return sum;
    }

    /**
     * 等差数列 求和公式
     * n(a1+an)/2
     */
    private static int Sum_Solution1(int n) {
        return (n + (int) Math.pow(n, 2)) >> 1;
    }

    public static void main(String[] args) {
        int i = Sum_Solution(5);
        System.out.println(i);
    }
}
